Software programs, including applications, frameworks, and operating systems, often evaluate one or more parameters in determining when to take an action, how to take an action, and what action should be taken. For instance, a software program may manage the execution of multiple tasks. This management can include maximizing use of computing system resources (e.g., one or more processors, memory, network bandwidth, etc.), without overtaxing the computing system, and ensuring that tasks are completed in a timely way, including taking into account various priorities that may be associated with the tasks.
Typically, the parameters evaluated by a software program, and functions used to evaluate the parameters and which can return a result that can be used to guide execution of the software program, are fixed when the program is written. The parameters and functions are typically hard coded, such that that they are not updated (or updatable) unless and until a new version of the software program is available. Thus, it can be cumbersome to update software programs to change functions or parameters that are evaluated during program execution. Particularly in the case of software programs that are part of a larger collection, or which have expansive functionality, such as an application framework, an operating system, or function libraries, updates may be comparatively infrequent.
As an example, a computing system may need to schedule, swap, and prioritize different tasks, including different tasks by different users. A cloud computing system may serve a cluster of computing systems or devices, and typically needs to simultaneously manage and execute many tasks, associated with a plurality of the serviced computing systems or devices. Code can be written to determine how to schedule and prioritize tasks. Also, different nodes forming a software cluster for an application may need to behave and operate differently based on the computations performed on the specific nodes, and may need to be prioritized or scheduled (e.g., throttled) differently.
After a program is developed that includes code to carry out these prioritization and scheduling functions, the configuration of the cloud computing system may change, the serviced computing systems and devices may change, the relative priorities desired for different tasks may change, tasks may be added changed, or removed, or other changes may occur that may impact how scheduling, swapping, and prioritization should be carried out. If changes are cumbersome to implement and apply, it may reduce the number of changes that are made, and the frequency at which the changes are made, which can result in less efficient use of system resources and less efficient execution of software functions. Accordingly, room for improvement exists in how software programs evaluate various parameters, including the parameters and functions that are to be evaluated.